/**
 * Created with IntelliJ IDEA.
 * Description:synchronized的实现
 * User: 邓大帅
 * Date: 2024-01-26
 * Time: 14:13

synchronized的实现策略：锁升级 无锁->偏向锁->自旋锁->重量锁 贯彻的原则就是非必要，不加锁 现在主流的jvm的实现，都不支持锁降级
偏向锁实际上是没加锁，只是做了个标记，如果后续没有锁竞争，一直保持，否则立马升级成自旋锁

锁消除：编译器会在编译时会自动判定代码中的锁是否应该加，如果用不上锁，则会消除
这个优化还是比较保守的，毕竟还是保证线程安全比较重要，只有确保用不上锁的场景才会消除锁

锁的粒度：锁内代码语句数量的多少 多为粗粒度，少为细粒度 粗粒度：串行执行多，并发少 细粒度相反 通常情况下细粒度比粗粒度执行快
锁粗化：但一个程序需要经常进行加锁和解锁操作，由于加锁解锁的开销
这时候细粒度执行的速度反而不如粗粒度，这时候编译器会进行优化，进行锁粗化，减少加锁解锁次数
*/
public class ThreadDemo3 {
}
